iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0

What is Endianness?

Endianness(位元組序)是指多位元組資料在計算機記憶體中儲存的順序。資料的表示通常涉及多個位元組,尤其是當處理整數、浮點數和其他複雜數據結構時。Endianness 主要有 Big EndianLittle Endian: 兩種形式:

  • Big Endian: 將高位元組(Most Significant Byte, MSB)儲存在低位址,而將低位元組(Least Significant Byte, LSB)儲存在高位址。以數字 0x12345678 為例:
地址    | 內容
-----------------
0x00    | 0x12
0x01    | 0x34
0x02    | 0x56
0x03    | 0x78
  • Little Endian: 將低位元組儲存在低位址,而將高位元組儲存在高位址。以同樣的數字 0x12345678 為例:
地址    | 內容
-----------------
0x00    | 0x78
0x01    | 0x56
0x02    | 0x34
0x03    | 0x12

資料交換

在跨平台資料交換的中 Endianness 的影響顯著。不同系統之間使用的位元組序可能不相同,這關係到資料的解讀準確性。舉例來說,若一個 Big Endian 的系統接收到來自 Little Endian 系統的資料食,會因為位元組順序的差異而錯誤解釋該數據的結構。這種錯誤不僅會妨礙應用程序的正常運行,還可能引發潛在的安全風險。因此在資料傳輸和解讀過程中謹慎處理,確保資料的一致性與準確性,以提升系統的整體穩定性和安全性。

檔案格式

許多檔案格式(如 BMP、PNG 或某些音頻格式)在其標頭中定義了數據的位元組序。如果一個使用 Little Endian 的系統解讀一個預設為 Big Endian 的檔案,可能會導致無法正確讀取檔案內容。例如,圖像的解析度、顏色深度等資訊可能會被錯誤解讀,進而導致圖像無法正常顯示或出現扭曲。

file signatures

通常指的是一組特定的字元序列,用於識別檔案的類型或格式。這些簽名(signatures)通常位於檔案的開頭部分,並且是用來幫助系統或應用程序快速判斷檔案格式的一種方法。檔案簽名對於檔案分析、資料恢復、惡意軟體檢測等尤為重要。

  1. 檔案格式識別:
    檔案簽名是用於識別檔案格式的主要依據。例如,JPEG 圖像檔案通常以 FFD8 開頭,而 PNG 圖像檔案以 89504E47 開頭。這使得操作系統或應用程式能夠迅速辨識檔案類型,並適當地進行處理。

  2. 安全性檢查:
    在安全性分析中,檔案簽名可以用來檢測潛在的惡意檔案。如果檔案的簽名不符合其擴展名(例如,檔案擴展名為 .exe 但簽名卻是 JPEG),這可能表明該檔案是偽裝的惡意軟體。

  3. 資料恢復:
    在檔案恢復過程中,檔案簽名可幫助工具識別損壞或遺失的檔案類型,即使它們的檔案擴展名丟失或被修改。

如何查看檔案簽名:使用像 xxd 的指令,可以來查看檔案的簽名。

今天練習有關檔案格式錯誤轉正的題目

Lab - endianness-v2

https://ithelp.ithome.com.tw/upload/images/20241005/20169462C4bUFd0bey.png

題目說他不知道 challengefile 這個檔案的類型是什麼,我們先利用 xxd challengefile 這個指令來查看 file signatures。可以看到開頭熟悉又陌生,很像是 jpg 檔,但順序好像相反了

https://ithelp.ithome.com.tw/upload/images/20241005/20169462M5UWWrmiMG.png

https://ithelp.ithome.com.tw/upload/images/20241005/2016946225zU6RFt8r.png

代表說這其實原本是一個 jpg 檔,那我們只需要想辦法把檔案的位元組順序倒回去,使用這個 Swap_endianness 線上工具。Data format 選擇跟原本一樣的檔案格式,然後把題目給的 challengefile 匯入 input,最後把 output 的檔案下載下來。

https://ithelp.ithome.com.tw/upload/images/20241005/20169462kc31JY4jzb.png

打開下載的圖片就是 flag 惹

https://ithelp.ithome.com.tw/upload/images/20241005/20169462YWL1dxPLJl.png

今天的練習就到這邊,以下是參考資料,請搭配服用:

Big-Endian vs Little-Endian
file_signatures
位元組順序

內文如有錯誤,還請不吝指教~


上一篇
Day20 - [Forensics] 封包分析
下一篇
Day22 - [Forensics] 檔案分析與提取
系列文
新手村預備,CTF 小菜雞跌跌撞撞的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言